The present invention relates to digital processors in general and to zero detection, for example in the output of an Arithmetic Logic Unit (ALU) in particular. Instructions in digital processors are often conditionally executed based on processor status and zero detection is an important part of status generation in such processors.
Virtually all digital processors contain zero detection logic to indicate whether the result of an arithmetic operation is zero. Programmers often use the stored zero detection result, commonly called the zero flag, and other status flags to decide how a program should behave in run-time.
The conventional manner of generating the zero flag value is to place a zero detection circuit after an adder and/or subtractor, as shown in FIG. 1. As shown in FIG. 1, the adder/subtractor (+/xe2x88x92) has a number of inputs (Add-Sub, A, B, c) and an output (R) which is input to the zero detection circuit 10. The zero detection circuit outputs a zero flag value (usually 1 or 0) to the zero flag position in a status register 12.
A disadvantage of the conventional arrangement is that the zero detection circuit is added to the output path of the adder/subtractor which path is often a critical path in the processor logic. As such the zero detection circuit adds a delay in the critical processing path and this degrades the processor performance. Attempts have been made to mitigate this problem by introducing an additional and so-called processor pipeline stage. This, however, has the drawback of adding significantly to the complexity of the processor and of incurring additional cost.
According to a first aspect of the present invention there is provided a digital processor having an arithmetic unit and a zero detection circuit wherein the zero detection circuit sets a zero flag when the output value from the arithmetic unit is zero, characterised in that the zero detection circuit is connected to the input of the arithmetic unit so as to enable testing of the input to the arithmetic unit independently of the arithmetic unit itself thereby to detect when the output value from the arithmetic unit is zero.
According to a second aspect of the present invention there is provided a method of performing zero detection in a digital processor so as to set a zero flag when the output value from an arithmetic unit of the processor is zero, comprising the step of connecting a zero detection circuit to the input of the arithmetic unit and testing the input to the arithmetic unit independently of the arithmetic unit itself so as to detect when the output value from the arithmetic unit is zero.